package com.liiiyian.testitem.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.liiiyian.testitem.domain.Table1;
import com.liiiyian.testitem.service.Table1Service;
import com.liiiyian.testitem.mapper.Table1Mapper;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

import java.util.*;

/**
* @author li
* @description 针对表【table_1】的数据库操作Service实现
* @createDate 2024-06-04 14:00:49
*/
@Service
@RequiredArgsConstructor  // 使用构造器注入
public class Table1ServiceImpl extends ServiceImpl<Table1Mapper, Table1>
    implements Table1Service{

    private final Table1Mapper table1Mapper;

    @Override
    public int addUser(Table1 table1) {
        // 根据UUID（去除掉4个分隔符"-"，共32位）设置新增数据主键（因为主键Column_1是字符串类型，无法自增）
        table1.setColumn1(UUID.randomUUID().toString().replaceAll("-", ""));

        // 获取当前时间将其设置为创建时间
        table1.setCreatetime(new Date());

        return table1Mapper.insert(table1);
    }

    @Override
    public Page<Table1> findUsersPage(Integer page, Integer rows) {
        /* 使用MyBatisPlus实现分页操作 */
        // 设置分页参数：当前页码，每页记录数
        Page<Table1> pageTable1 = new Page<>(page, rows);

        // 分页查询
        table1Mapper.selectPage(pageTable1, null);

        // 返回响应分页对象（包含分页存储数据信息和分页配置信息）
        return pageTable1;
    }

    @Override
    public List<Table1> findUsersAll() {
        return table1Mapper.selectList(null);
    }

    @Override
    public Page<Table1> findUserByColumnAndKey(String column, String key, Integer page, Integer rows) {
        // 解析前端字段命名，将其调整为数据库匹配字段名
        column = "Column_" + column.charAt(column.length() - 1);

        // 使用QueryWrapper构造条件，查询字段column中包含查询关键字key
        QueryWrapper<Table1> queryWrapper = new QueryWrapper<Table1>()
                .like(column, key);

        // 设置分页参数：当前页码，每页记录数
        Page<Table1> pageTable1 = new Page<>(page, rows);

        // 分页查询
        table1Mapper.selectPage(pageTable1, queryWrapper);

        // 设置条件参数为QueryWrapper，进行分页查询并返回分页对象
        return table1Mapper.selectPage(pageTable1, queryWrapper);
    }


    @Override
    public int deleteUserByColumn1(String column1) {
        return table1Mapper.deleteById(column1);
    }

    @Override
    public int updateUserByColumn1(Table1 table1) {
        // 获取当前时间将其设置为修改时间
        table1.setUpdatetime(new Date());

        return table1Mapper.updateById(table1);
    }

    @Override
    public List<Table1> getData() {
        return table1Mapper.selectList(null);
    }

}




